/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package TapestryModel;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Site</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link TapestryModel.Site#getAuthor <em>Author</em>}</li>
 *   <li>{@link TapestryModel.Site#getUrl <em>Url</em>}</li>
 *   <li>{@link TapestryModel.Site#getTitle <em>Title</em>}</li>
 *   <li>{@link TapestryModel.Site#getName <em>Name</em>}</li>
 *   <li>{@link TapestryModel.Site#getArtifactId <em>Artifact Id</em>}</li>
 *   <li>{@link TapestryModel.Site#getGroupId <em>Group Id</em>}</li>
 *   <li>{@link TapestryModel.Site#getBasePackage <em>Base Package</em>}</li>
 *   <li>{@link TapestryModel.Site#getDescription <em>Description</em>}</li>
 *   <li>{@link TapestryModel.Site#getVersion <em>Version</em>}</li>
 *   <li>{@link TapestryModel.Site#getTapestryVersion <em>Tapestry Version</em>}</li>
 *   <li>{@link TapestryModel.Site#getPage <em>Page</em>}</li>
 *   <li>{@link TapestryModel.Site#getObject <em>Object</em>}</li>
 * </ul>
 * </p>
 *
 * @see TapestryModel.TapestryModelPackage#getSite()
 * @model
 * @generated
 */
public interface Site extends EObject {
    /**
     * Returns the value of the '<em><b>Author</b></em>' attribute.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Author</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Author</em>' attribute.
     * @see #setAuthor(String)
     * @see TapestryModel.TapestryModelPackage#getSite_Author()
     * @model
     * @generated
     */
    String getAuthor();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getAuthor <em>Author</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Author</em>' attribute.
     * @see #getAuthor()
     * @generated
     */
    void setAuthor(String value);

    /**
     * Returns the value of the '<em><b>Url</b></em>' attribute.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Url</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Url</em>' attribute.
     * @see #setUrl(String)
     * @see TapestryModel.TapestryModelPackage#getSite_Url()
     * @model
     * @generated
     */
    String getUrl();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getUrl <em>Url</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Url</em>' attribute.
     * @see #getUrl()
     * @generated
     */
    void setUrl(String value);

    /**
     * Returns the value of the '<em><b>Title</b></em>' attribute.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Title</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Title</em>' attribute.
     * @see #setTitle(String)
     * @see TapestryModel.TapestryModelPackage#getSite_Title()
     * @model required="true"
     * @generated
     */
    String getTitle();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getTitle <em>Title</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Title</em>' attribute.
     * @see #getTitle()
     * @generated
     */
    void setTitle(String value);

    /**
     * Returns the value of the '<em><b>Name</b></em>' attribute.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Name</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Name</em>' attribute.
     * @see #setName(String)
     * @see TapestryModel.TapestryModelPackage#getSite_Name()
     * @model required="true"
     * @generated
     */
    String getName();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getName <em>Name</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Name</em>' attribute.
     * @see #getName()
     * @generated
     */
    void setName(String value);

    /**
     * Returns the value of the '<em><b>Artifact Id</b></em>' attribute.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Artifact Id</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Artifact Id</em>' attribute.
     * @see #setArtifactId(String)
     * @see TapestryModel.TapestryModelPackage#getSite_ArtifactId()
     * @model required="true"
     * @generated
     */
    String getArtifactId();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getArtifactId <em>Artifact Id</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Artifact Id</em>' attribute.
     * @see #getArtifactId()
     * @generated
     */
    void setArtifactId(String value);

    /**
     * Returns the value of the '<em><b>Group Id</b></em>' attribute.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Group Id</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Group Id</em>' attribute.
     * @see #setGroupId(String)
     * @see TapestryModel.TapestryModelPackage#getSite_GroupId()
     * @model required="true"
     * @generated
     */
    String getGroupId();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getGroupId <em>Group Id</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Group Id</em>' attribute.
     * @see #getGroupId()
     * @generated
     */
    void setGroupId(String value);

    /**
     * Returns the value of the '<em><b>Base Package</b></em>' attribute.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Base Package</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Base Package</em>' attribute.
     * @see #setBasePackage(String)
     * @see TapestryModel.TapestryModelPackage#getSite_BasePackage()
     * @model required="true"
     * @generated
     */
    String getBasePackage();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getBasePackage <em>Base Package</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Base Package</em>' attribute.
     * @see #getBasePackage()
     * @generated
     */
    void setBasePackage(String value);

    /**
     * Returns the value of the '<em><b>Description</b></em>' attribute.
     * The default value is <code>"tapetry project"</code>.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Description</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Description</em>' attribute.
     * @see #setDescription(String)
     * @see TapestryModel.TapestryModelPackage#getSite_Description()
     * @model default="tapetry project" required="true"
     * @generated
     */
    String getDescription();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getDescription <em>Description</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Description</em>' attribute.
     * @see #getDescription()
     * @generated
     */
    void setDescription(String value);

    /**
     * Returns the value of the '<em><b>Version</b></em>' attribute.
     * The default value is <code>"1.0.0-SNAPSHOT"</code>.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Version</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Version</em>' attribute.
     * @see #setVersion(String)
     * @see TapestryModel.TapestryModelPackage#getSite_Version()
     * @model default="1.0.0-SNAPSHOT" required="true"
     * @generated
     */
    String getVersion();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getVersion <em>Version</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Version</em>' attribute.
     * @see #getVersion()
     * @generated
     */
    void setVersion(String value);

    /**
     * Returns the value of the '<em><b>Tapestry Version</b></em>' attribute.
     * The default value is <code>"5.0.18"</code>.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Tapestry Version</em>' attribute isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Tapestry Version</em>' attribute.
     * @see #setTapestryVersion(String)
     * @see TapestryModel.TapestryModelPackage#getSite_TapestryVersion()
     * @model default="5.0.18" required="true"
     * @generated
     */
    String getTapestryVersion();

    /**
     * Sets the value of the '{@link TapestryModel.Site#getTapestryVersion <em>Tapestry Version</em>}' attribute.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param value the new value of the '<em>Tapestry Version</em>' attribute.
     * @see #getTapestryVersion()
     * @generated
     */
    void setTapestryVersion(String value);

    /**
     * Returns the value of the '<em><b>Page</b></em>' containment reference list.
     * The list contents are of type {@link TapestryModel.Page}.
     * It is bidirectional and its opposite is '{@link TapestryModel.Page#getSite <em>Site</em>}'.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Page</em>' containment reference list isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Page</em>' containment reference list.
     * @see TapestryModel.TapestryModelPackage#getSite_Page()
     * @see TapestryModel.Page#getSite
     * @model opposite="site" containment="true"
     * @generated
     */
    EList<Page> getPage();

    /**
     * Returns the value of the '<em><b>Object</b></em>' containment reference list.
     * The list contents are of type {@link TapestryModel.Object}.
     * It is bidirectional and its opposite is '{@link TapestryModel.Object#getSite <em>Site</em>}'.
     * <!-- begin-user-doc -->
     * <p>
     * If the meaning of the '<em>Object</em>' containment reference list isn't clear,
     * there really should be more of a description here...
     * </p>
     * <!-- end-user-doc -->
     * @return the value of the '<em>Object</em>' containment reference list.
     * @see TapestryModel.TapestryModelPackage#getSite_Object()
     * @see TapestryModel.Object#getSite
     * @model opposite="site" containment="true"
     * @generated
     */
    EList<TapestryModel.Object> getObject();

} // Site
